package cn.tedu.innerclass;
/**本类用于内部类的入门案例*/
public class TestInner1 {
    public static void main(String[] args) {
        /**外部类名.内部类名 对象名 = 外部类对象.内部类对象*/
        Outer.Inner oi = new Outer().new Inner();
        oi.delete();
        System.out.println(oi.sum);

        new Outer().find();//匿名对象，只能使用一次，一次只能调用一个方法

    }
}
class Outer{
    String name;
    private int age;
    public void find(){
        System.out.println("外部类的find()");
/**外部类如果想要使用内部类的资源，必须先创建内部类的对象
 * 通过内部类的对象再来使用内部类的资源*/
    Inner in = new Inner();
        System.out.println(in.sum);
        in.delete();
//        System.out.println(sum);
//        delete();
    }

     /**根据内部类的位置不同，分为:成员内部类(类里方法外)与局部内部类(方法里)*/
     class Inner{
         int sum = 10;
         public void delete(){
             System.out.println("内部类的delete");
             /**内部类可以直接使用外部类的资源，私有成员也可以*/
             System.out.println(name);
             System.out.println(age);//内部类使用外部类的私有方法
             /**注意:此处测试完成需要注释掉，否则来回互相调用
              * 会抛出栈溢出异常*/
//             find();//内部类使用外部类的普通方法
         }
     }

}
